#include "Pacman.h"
#include "EstrategiaMovimientoPacman.h"

Pacman::Pacman(EstrategiaMovimiento* unaEstrategiaMovimiento, Punto* unPunto, unsigned int unRadio, bool vivo,JugadorModelo* unJugador) : ObjetoVivo(unPunto,unRadio,vivo){
    this->estrategiaMovimiento = unaEstrategiaMovimiento;
    this->jugador = unJugador;
    this->siendoCazados = true;
}

bool Pacman::estaSiendoCazado(){
    return this->siendoCazados;
    }

void Pacman::setEstaSiendoCasado(bool estado){
    this->siendoCazados = estado;
    }

void Pacman::vivir(){
	Punto* nuevo = this->getEstrategiaMovimiento()->mover(this->getPosicion());
	this->setPosicion(nuevo);
}

EstrategiaMovimiento* Pacman::getEstrategiaMovimiento(){
    return this->estrategiaMovimiento;
}

void Pacman::cambiarDireccion(Direccion* unaDireccion){
    ((EstrategiaMovimientoPacman*)this->getEstrategiaMovimiento())->setDireccion(unaDireccion);
}

Direccion* Pacman::getDireccion(){
	return ((EstrategiaMovimientoPacman*)this->getEstrategiaMovimiento())->getDireccion();
}

void Pacman::setEstrategiaMovimiento(EstrategiaMovimiento* unaEstrategiaMovimiento){
    this->estrategiaMovimiento = unaEstrategiaMovimiento;
}

void Pacman::colisionarConPacman(ObjetoVivo* unObjetoVivo){
    Pacman* elPacman = (Pacman*)unObjetoVivo;
    
	if(!this->equals(elPacman)){
        //Ruido
        
        }


    }

void Pacman::colisionarConFantasma(ObjetoVivo* unObjetoVivo){
    
    
    }

JugadorModelo* Pacman::getJugador(){
    return this->jugador; 
}

void Pacman::setJugador(JugadorModelo* unJugador){
    this->jugador = unJugador;
}

Pacman::~Pacman(void){
	delete this->jugador ;
	delete this->estrategiaMovimiento ;
}


